web3.js コールバック・Promise イベント
web3 では非同期関数を扱う複数の方法を提供しています。
異なる標準を採用している様々なプロジェクトに web3 を統合できるようにするため
ほとんどの web3.js オブジェクトは、メソッドチェーンのための promise を返すだけではなく、最終パラメータとしてコールバックを受け付けます。
ブロックチェーンとしての Ethereum には異なるレベルの最終状態があります。
したがって、あるアクションについて、複数の「段階」を返す必要があります。
この要求を満たすために、web3.eth.sendTransaction のような関数やコントラクトメソッドでは "promiEvent" を返します。
この "promiEvent" は、トランザクションのような、ブロックチェーンにおけるアクションの異なる段階を扱うためのイベントエミッタとセットになった promise です。
PromiEvent は、on や once 、off を追加した通常の promise と同様に動作します。
これにより、 "receipt" や "transactionHash" のような追加のイベントを監視できるようになります。
code:example.js
web3.eth.sendTransaction({from: '0x123...', data: '0x432...'})
.once('transactionHash', function(hash){ ... })
.once('receipt', function(receipt){ ... })
.on('confirmation', function(confNumber, receipt){ ... })
.on('error', function(error){ ... })
.then(function(receipt){
// receipt がブロックに取り込まれると呼ばれます。
});
原文